You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CasperJS PHP封装脚本运行命令失败求助

解决PHP CasperJS运行时tempnam()的Notice提示

这个Notice本质上是PHP的提醒:tempnam()函数在没有指定自定义临时目录时,默认使用了系统临时目录,它本身不会阻止CasperJS脚本的运行,但如果想要消除这个提示,可以试试下面几种方法:

方法一:配置PHP的临时目录(推荐)

WAMP环境下,你可以通过修改php.ini来指定PHP的临时目录,让tempnam()使用这个目录而非系统默认:

  1. 打开WAMP管理器,找到对应PHP版本的php.ini(注意区分网页环境和CLI环境的php.ini:如果脚本通过网页运行,选Apache对应的;如果是CLI运行,选PHP CLI对应的)
  2. 在配置文件中找到sys_temp_dir项,设置为你有权限读写的目录,比如:
    sys_temp_dir = "C:/wamp64/tmp"
    
  3. 重启WAMP的Apache服务,重新运行脚本

方法二:修改Casper.php的代码

直接修改封装包的代码,给tempnam()添加自定义目录参数:

  1. 打开文件C:\wamp64\www\casper2\vendor\phpcasperjs\phpcasperjs\src\Casper.php,定位到第595行
  2. 将原来的tempnam()调用修改为指定临时目录的版本,比如使用PHP内置的sys_get_temp_dir()获取当前配置的临时目录:
    // 原代码示例:
    // $tempFile = tempnam('', 'casper_');
    // 修改后:
    $tempFile = tempnam(sys_get_temp_dir(), 'casper_');
    
    或者你也可以直接指定一个固定目录(确保该目录存在且PHP有读写权限):
    $tempFile = tempnam('C:/wamp64/tmp', 'casper_');
    
  3. 保存文件后重新运行脚本

方法三:关闭Notice级别的报错(不推荐)

如果只是不想看到这个提示,也可以临时关闭Notice报错,但这会隐藏其他可能有用的提醒,所以不建议长期使用:

  • 在你的脚本开头添加以下代码:
    error_reporting(E_ALL ^ E_NOTICE);
    
  • 或者修改php.ini中的error_reporting项:
    error_reporting = E_ALL & ~E_NOTICE
    

内容的提问来源于stack exchange,提问作者Wesley Jeftha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 05:15:47